package com.speedcar.base.result;

public interface ScResultWrapper {
    /**
     * 包装返回结果
     * @param body 原始返回数据
     * @return 包装后的结果
     */
    Object wrap(Object body);

    /**
     * 包装异常返回结果
     * @param code 错误码
     * @param message 错误信息
     * @param args 错误参数
     * @return 包装后的结果
     */
    Object wrapException(String code, String message, Object[] args);

    /**
     * 判断是否支持包装该类型的结果
     * @param body 原始返回数据
     * @return 是否支持包装
     */
    default boolean supports(Object body) {
        return true;
    }

    /**
     * 判断是否支持包装该异常
     * @param code 错误码
     * @param message 错误信息
     * @return 是否支持包装
     */
    default boolean supportsException(String code, String message) {
        return true;
    }
}
